
package com.teracode.university.intro_sistemas_java.solucion;


/**
 * Ejemplo práctico para el curso de Java
 * @author gus
 * Esto es un comentario
 */

public class Persona {
	
	private String nombre; // Nombre
	private Integer edad;  // Edad entre 1 y 150
	private Boolean esHombre;  // Genero. Si es true es hombre, si es false es mujer
	
	public String getNombre() {
		return nombre;
	}

	public Integer getEdad() {
		return edad;
	}

	public Boolean getEsHombre() {
		return esHombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public void setEdad(Integer edad) {
		this.edad = edad;
	}
	
	public void setEsHombre(Boolean esHombre) {
		this.esHombre = esHombre;
	}
	
	public String agregarPrefijo ( String nombre, Boolean esHombre ) {
	    
	    String nuevoNombre;
	    
	    if (esHombre) {
	        nuevoNombre = "Sr. " + nombre; // agrego "Sr. " delante del nombre
	    }
	    else {
	        nuevoNombre = "Sra. " + nombre; // agrego "Sra. " delante del nombre
	    }

	    return nuevoNombre;
	}
	
	public boolean esVocal( char letra ) {
		return "AEIOUaeiou".indexOf(letra, 0) != -1;
	}
	
	public int contarVocales(String nombrePersona) {
		
		int cantidadVocales = 0;
		
		for (int i=0; i < nombrePersona.length(); i++) {
			
			if ("aeiouAEIOU".indexOf(nombrePersona.charAt(i)) > 0) { // si "aeiouAEIOU" contiene a la letra
				
				cantidadVocales++;
				
			}
		
		}
		
		return cantidadVocales; //devuelvo la cantidad de vocales que conté
	}
	
	public String invertirNombre(String nombrePersona) {
		
		String nombreInvertido = "";
		
		for (int i=0; i < nombrePersona.length(); i++) {
			
			nombreInvertido += nombrePersona.charAt(nombrePersona.length() - 1 - i);
			
		}
		
		return nombreInvertido; //devuelvo el nombre invertido
	
/**************************************************************************************/
/***                        De esta forma tambien funcionaba                        ***/
//		StringBuffer nombreInvertido = new StringBuffer(nombrePersona);
//		
//		nombreInvertido.reverse();
//		
//		return nombreInvertido.toString();
/**************************************************************************************/
	}
	
	public Boolean esPalindromo(String palabra) {
		
		String palabraInvertida = this.invertirNombre(palabra); // doy vuelta la palabra reutilizando el metodo invertirNombre
		
		return palabra.equals(palabraInvertida); // Si la inversa es igual a la original devuelvo TRUE, sino FALSE
		
	}
	
}
